import tensorflow as tf
from tensorflow import keras
from tensorflow.keras.optimizers import RMSprop
import numpy as np
import pandas as pd
from tensorflow.keras.preprocessing import image
from tensorflow.keras.preprocessing.image import ImageDataGenerator
import matplotlib.pyplot as plt
import os
import cv2
img=image.load_img ("C://Users//Admin//Desktop//Aishwarya Rai Images//training//good images//ash 11.JFIF")
plt.imshow(img)
<matplotlib.image.AxesImage at 0x21827c1c8e0>
cv2.imread ("C://Users//Admin//Desktop//Aishwarya Rai Images//training//good images//ash 11.JFIF")
array([[[104, 106, 107],
[100, 102, 103],
[ 94, 96, 97],
...,
[169, 169, 175],
[170, 170, 176],
[172, 169, 178]],
[[105, 107, 108],
[101, 103, 104],
[ 95, 97, 98],
...,
[170, 170, 176],
[171, 171, 177],
[177, 174, 183]],
[[106, 108, 109],
[102, 104, 105],
[ 97, 99, 100],
...,
[171, 171, 177],
[172, 172, 178],
[180, 177, 186]],
...,
[[149, 184, 234],
[138, 175, 225],
[125, 166, 215],
...,
[ 92, 142, 202],
[ 89, 139, 199],
[ 95, 140, 201]],
[[139, 175, 229],
[127, 166, 218],
[115, 155, 208],
...,
[ 98, 148, 208],
[ 96, 143, 204],
[ 99, 146, 207]],
[[119, 156, 212],
[113, 153, 206],
[104, 145, 200],
...,
[102, 150, 208],
[ 98, 146, 204],
[ 98, 145, 206]]], dtype=uint8)
cv2.imread ("C://Users//Admin//Desktop//Aishwarya Rai Images//training//good images//ash 11.JFIF").shape
(121, 161, 3)
train=ImageDataGenerator(rescale=1/206)
validation=ImageDataGenerator(rescale=1/206)
train_dataset=train.flow_from_directory("C://Users//Admin//Desktop//Aishwarya Rai Images//training//",target_size=(150,150),batch_size=2,class_mode='binary')
Found 14 images belonging to 2 classes.
validation_dataset=validation.flow_from_directory("C://Users//Admin//Desktop//Aishwarya Rai Images//validation//",target_size=(150,150),batch_size=2,class_mode='binary')
Found 13 images belonging to 2 classes.
train_dataset.class_indices
{'bad images': 0, 'good images': 1}
train_dataset.classes
array([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1])
model=tf.keras.models.Sequential([tf.keras.layers.Conv2D(16,(3,3),activation ='relu',input_shape=(150,150,3)),
tf.keras.layers.MaxPool2D(2,2),
#
tf.keras.layers.Conv2D(32,(3,3),activation ='relu'),
tf.keras.layers.MaxPool2D(2,2),
#
tf.keras.layers.Conv2D(64,(3,3),activation ='relu'),
tf.keras.layers.MaxPool2D(2,2),
##
tf.keras.layers.Flatten(),
##
tf.keras.layers.Dense(512,activation ='relu'),
##
tf.keras.layers.Dense(1,activation ='sigmoid')])
model.compile(loss ='binary_crossentropy',
optimizer= RMSprop(lr=0.001),
metrics=['accuracy'])
model_fit=model.fit(train_dataset,
steps_per_epoch=1,
epochs=30,
validation_data=validation_dataset)
Epoch 1/30 1/1 [==============================] - 3s 3s/step - loss: 0.7995 - accuracy: 0.0000e+00 - val_loss: 19.5123 - val_accuracy: 0.6154 Epoch 2/30 1/1 [==============================] - 1s 707ms/step - loss: 57.9924 - accuracy: 0.0000e+00 - val_loss: 1.1580 - val_accuracy: 0.3846 Epoch 3/30 1/1 [==============================] - 1s 706ms/step - loss: 0.9192 - accuracy: 0.5000 - val_loss: 0.6432 - val_accuracy: 0.6154 Epoch 4/30 1/1 [==============================] - 1s 734ms/step - loss: 0.6618 - accuracy: 0.5000 - val_loss: 0.6529 - val_accuracy: 0.4615 Epoch 5/30 1/1 [==============================] - 1s 738ms/step - loss: 0.8934 - accuracy: 0.0000e+00 - val_loss: 1.2478 - val_accuracy: 0.6154 Epoch 6/30 1/1 [==============================] - 1s 758ms/step - loss: 1.6490 - accuracy: 0.5000 - val_loss: 0.5892 - val_accuracy: 0.8462 Epoch 7/30 1/1 [==============================] - 1s 734ms/step - loss: 0.7052 - accuracy: 0.5000 - val_loss: 0.6307 - val_accuracy: 0.5385 Epoch 8/30 1/1 [==============================] - 1s 658ms/step - loss: 0.5819 - accuracy: 0.5000 - val_loss: 0.5163 - val_accuracy: 0.9231 Epoch 9/30 1/1 [==============================] - 1s 792ms/step - loss: 0.5198 - accuracy: 1.0000 - val_loss: 0.5240 - val_accuracy: 0.7692 Epoch 10/30 1/1 [==============================] - 1s 617ms/step - loss: 0.5059 - accuracy: 1.0000 - val_loss: 0.5221 - val_accuracy: 0.7692 Epoch 11/30 1/1 [==============================] - 1s 577ms/step - loss: 0.5215 - accuracy: 0.5000 - val_loss: 0.4142 - val_accuracy: 0.9231 Epoch 12/30 1/1 [==============================] - 1s 642ms/step - loss: 0.3704 - accuracy: 1.0000 - val_loss: 0.3682 - val_accuracy: 0.8462 Epoch 13/30 1/1 [==============================] - 1s 647ms/step - loss: 0.2939 - accuracy: 1.0000 - val_loss: 0.3503 - val_accuracy: 1.0000 Epoch 14/30 1/1 [==============================] - 1s 715ms/step - loss: 0.2993 - accuracy: 1.0000 - val_loss: 0.2634 - val_accuracy: 0.9231 Epoch 15/30 1/1 [==============================] - 1s 768ms/step - loss: 0.1143 - accuracy: 1.0000 - val_loss: 0.9987 - val_accuracy: 0.6154 Epoch 16/30 1/1 [==============================] - 1s 593ms/step - loss: 0.7361 - accuracy: 0.5000 - val_loss: 0.7185 - val_accuracy: 0.4615 Epoch 17/30 1/1 [==============================] - 1s 622ms/step - loss: 0.5623 - accuracy: 0.5000 - val_loss: 0.3312 - val_accuracy: 0.8462 Epoch 18/30 1/1 [==============================] - 1s 696ms/step - loss: 0.0891 - accuracy: 1.0000 - val_loss: 0.3316 - val_accuracy: 0.8462 Epoch 19/30 1/1 [==============================] - 1s 720ms/step - loss: 0.0715 - accuracy: 1.0000 - val_loss: 0.4809 - val_accuracy: 0.6923 Epoch 20/30 1/1 [==============================] - 1s 782ms/step - loss: 0.0875 - accuracy: 1.0000 - val_loss: 0.6843 - val_accuracy: 0.6923 Epoch 21/30 1/1 [==============================] - 1s 629ms/step - loss: 1.0935 - accuracy: 0.5000 - val_loss: 0.5983 - val_accuracy: 0.5385 Epoch 22/30 1/1 [==============================] - 1s 703ms/step - loss: 0.7228 - accuracy: 0.5000 - val_loss: 0.2845 - val_accuracy: 0.9231 Epoch 23/30 1/1 [==============================] - 1s 723ms/step - loss: 0.2050 - accuracy: 1.0000 - val_loss: 0.3933 - val_accuracy: 0.7692 Epoch 24/30 1/1 [==============================] - 1s 691ms/step - loss: 0.5607 - accuracy: 0.5000 - val_loss: 0.2601 - val_accuracy: 0.9231 Epoch 25/30 1/1 [==============================] - 1s 669ms/step - loss: 0.2966 - accuracy: 1.0000 - val_loss: 0.2615 - val_accuracy: 0.8462 Epoch 26/30 1/1 [==============================] - 1s 642ms/step - loss: 0.1040 - accuracy: 1.0000 - val_loss: 0.3625 - val_accuracy: 0.8462 Epoch 27/30 1/1 [==============================] - 1s 657ms/step - loss: 1.2872 - accuracy: 0.5000 - val_loss: 0.3500 - val_accuracy: 0.9231 Epoch 28/30 1/1 [==============================] - 1s 602ms/step - loss: 0.7682 - accuracy: 0.5000 - val_loss: 0.2259 - val_accuracy: 1.0000 Epoch 29/30 1/1 [==============================] - 1s 643ms/step - loss: 0.2443 - accuracy: 1.0000 - val_loss: 0.1874 - val_accuracy: 1.0000 Epoch 30/30 1/1 [==============================] - 1s 590ms/step - loss: 0.3799 - accuracy: 1.0000 - val_loss: 0.2029 - val_accuracy: 1.0000
validation_dataset.class_indices
{'bad images': 0, 'good images': 1}
dir_path=("C://Users//Admin//Desktop//Aishwarya Rai Images//training//good images//")
for i in os.listdir(dir_path):
img=image.load_img(dir_path+'//'+i)
plt.imshow(img)
plt.show()
dir_path=("C://Users//Admin//Desktop//Aishwarya Rai Images//training//bad images//")
for i in os.listdir(dir_path):
img=image.load_img(dir_path+'//'+i,target_size=(150,150))
plt.imshow(img)
plt.show()
dir_path=("C://Users//Admin//Desktop//Aishwarya Rai Images//training//good images//")
for i in os.listdir(dir_path):
img=image.load_img(dir_path+'//'+i,target_size=(150,150))
plt.imshow(img)
plt.show()
X = image.img_to_array(img)
X = np.expand_dims(X,axis = 0)
images= np.vstack([X])
val = model.predict(images)
if val == 0:
print ("images is bad")
else:
print ("images is good")
1/1 [==============================] - 0s 99ms/step
1/1 [==============================] - 0s 30ms/step
1/1 [==============================] - 0s 26ms/step
1/1 [==============================] - 0s 34ms/step
1/1 [==============================] - 0s 26ms/step
1/1 [==============================] - 0s 35ms/step
1/1 [==============================] - 0s 25ms/step
1/1 [==============================] - 0s 27ms/step images is good
dir_path=("C://Users//Admin//Desktop//Aishwarya Rai Images//training//bad images//")
for i in os.listdir(dir_path):
img=image.load_img(dir_path+'//'+i,target_size=(150,150))
plt.imshow(img)
plt.show()
X = image.img_to_array(img)
X = np.expand_dims(X,axis =0)
images=np.vstack([X])
val = model.predict(images)
if val == 0:
print ("images is bad")
else:
print ("images is good")
1/1 [==============================] - 0s 27ms/step
1/1 [==============================] - 0s 28ms/step
1/1 [==============================] - 0s 27ms/step
1/1 [==============================] - 0s 30ms/step
1/1 [==============================] - 0s 33ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 32ms/step
1/1 [==============================] - 0s 40ms/step images is bad